package io;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;

//对象流
//java.io.ObjectOutputStream和ObjectInputStream
//他们是一对高级流，在流连接中的作用是进行对象的序列化以及反序列化
//对象序列化：将对象按照其结构转化为一组字节的过程
public class OOSDemo {
    public static void main(String[] args) throws IOException {
        /*
        将一个对象写入文件
        先将Person文件转换成一组字节
        将字节写入文件                                     序列化        持久化
        流连接：                            对象--------> 对象流------>文件流-------->文件
      */
      String name="song";
      int age=22;
      String gender="男";
      String[] otherInfo={"哈尔滨","爱好"};
      Person person=new Person(name,age,gender,otherInfo);
      FileOutputStream fos=new FileOutputStream("jmq.obj");
      ObjectOutputStream obs=new ObjectOutputStream(fos);
      //对象输出流提供序列化的方法
      //void writeObject(Object object)
      //给定的对象转换成为一组字节并且写出，需要注意的是：写出的对象所属的类必须实现接口
      //实现接口：java.io.Serializable
      //否则会抛出异常：java.io.NotSerializableException
      obs.writeObject(person);
      obs.close();
      System.out.println("执行完毕");
    }
}
